import java.util.ArrayList;

/**
 * 题目描述：不使用^操作实现异或运算。
 * 分析与解答：最简单的方法是遍历两个整数的所有的位，
 * 如果两个数的某一位相等，那么结果中这一位的值就为0，否则结果中这一位的值就为1。实现代码如下：
 */
public class O如何在不使用上尖括号操作实现异或运算 {

    private final int BITS=32;


    /**
     * 最简单的方法是遍历两个整数的所有的位，
     * 如果两个数的某一位相等，
     * 那么结果中这一位的值就为0
     * 否则结果中这一位的值就为1
     */

    //获取x与y的异或的结果
    public int xor(int x,int y){
        int res=0;
        int xoredBit;
        int i;
        for (i = BITS-1; i >=0 ; i--) {
            /**
             * 获取x与y当前的bit值
             */
            boolean b1=(x &(1<<i))>0;
            boolean b2=(y &(1<<i))>0;
            /**
             * 只有这两位都是1或0的时候结果为0
             */
            if(b1==b2){
                xoredBit=0;
            }else {
                xoredBit=1;
            }
            res<<=1;
            res|=xoredBit;
        }
        return res;
    }

    public static void main(String[] args) {
        int x=3,y=5;
        O如何在不使用上尖括号操作实现异或运算 mx=new O如何在不使用上尖括号操作实现异或运算();
        System.out.println(mx.xor(x,y));
    }

}
